\documentclass[12pt]{article}

%------------------------- Carga de paquetes ---------------------------
%
% Si no necesitás algún paquete, comentalo.
%

%
% Definición del tama?o de página y los márgenes:
%
\usepackage[a4paper,headheight=16pt,scale={0.7,0.75},hoffset=0.5cm,voffset=0.5cm]{geometry}

\usepackage{fancyhdr}
%
% Vamos a escribir en castellano:
%
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}

%
% Si preferís el tipo de letra Helvetica (Arial), descomentá las siguientes
% dos lineas (las fórmulas seguirán estando en Times):
%
%\usepackage[scaled=0.9]{helvet}
%\renewcommand\familydefault{\sfdefault}

%
% El paquete amsmath agrega algunas funcionalidades extra a las fórmulas. 
% Además defino la numeración de las tablas y figuras al estilo "Figura 2.3", 
% en lugar de "Figura 7". (Por lo tanto, aunque no uses fórmulas, si querés
% este tipo de numeración dejá el paquete amsmath descomentado).
%
\usepackage{amsmath}
\numberwithin{equation}{section}
\numberwithin{figure}{section}
\numberwithin{table}{section}
\usepackage{amssymb}

%
% Para tener cabecera y pie de página con un estilo personalizado:
%
\usepackage{fancyhdr}

%
% Para poner el texto "Figura X" en negrita:
% (Si no tenés el paquete 'caption2', probá con 'caption').
%
\usepackage[hang,bf]{caption2}

%
% Para poder usar subfiguras: (al estilo Figura 2.3(b) )
%
\usepackage{subfigure}

%
% Para poder agregar notas al pie en tablas:
%
%\usepackage{threeparttable}

%
% Para que ponga "Tabla" en lugar de "Cuadro":
%
\addto\captionsspanish{\def\tablename{Tabla}}

%
% Para incluir código fuente:
%
\usepackage{moreverb}
\usepackage{listings}
%
% Para tener secciones con interlineado controlable:
%
\usepackage{setspace}

%------------------------------ graphicx ----------------------------------
%
% Para incluir imágenes, el siguiente código carga el paquete graphicx 
% según se esté generando un archivo dvi o un pdf (con pdflatex). 
%

\newif\ifpdf
\ifx\pdfoutput\undefined
	\pdffalse
\else
	\pdfoutput=1
	\pdftrue
\fi

\ifpdf
	\usepackage[pdftex]{graphicx}
	\pdfcompresslevel=9
\else
	\usepackage[dvips]{graphicx}
\fi

\usepackage{epsfig}

%Directorio de imagenes
\newcommand{\imgdir}{images}
\graphicspath{{\imgdir/}}

%------------------------- Inicio del documento ---------------------------

\usepackage{url}
\usepackage{caratula}

\pagestyle{fancy}

\materia{66.71 Sistemas Gr\'aficos}
\submateria{Segundo Cuatrimestre de 2008}
\titulo{Tr\'abajo Pr\'actico N\'umero 1}
\integrante{Malchinsky, Diego}{85373}{d\_malcha@hotmail.com}
\integrante{Keena, Hern\'an}{84471}{hpk2987@yahoo.com.ar}

\begin{document}

%
% Hago que en la cabecera de página se muestre a la derecha la sección,
% y en el pie, en número de página a la derecha:
%
\pagestyle{fancy}
\renewcommand{\sectionmark}[1]{\markboth{}{\thesection\ \ #1}}
\lhead{}
\chead{}
\rhead{\rightmark}
\lfoot{}
\cfoot{}
\rfoot{\thepage}

\maketitle

%
% Pongo el índice en una página aparte:
%
%\tableofcontents
%\newpage

%
% Inicio del TP:
%

\fancyfoot[LO]{ \footnotesize{Trabajo Pr\'actico Nro1 \\ Fecha Entrega 26/09/2008 - Cuatrimestre 2do 2008 \\ Malchinsky,Diego 85373 Keena,Hern\'an Pablo 84471} }
%\fancyfoot[CO]{}
%\fancyfoot[RO]{\thepage\ de \pageref{LastPage}}

%\footnote{Trabajo Pr\'actico: Nro. 1	Cuatrimestre: 2do 2008	
%		  Integrantes: Malchinsky, Diego 85373;Keena,Hern\'an Pablo 84471	Fecha Entrega:26/09/2008}.

\section{Dise\~no}

\subsection{Aplicaci\'on:}
La clase Scene es la encargada de crear,dibujar y controlar todos los objetos existentes
en la escena y tambien de controlar el viewport y worldWindow del pipeline.
Los metodos de teclado,timer y display de la misma son invocados desde la clase Framework( la cual 
encapsula todo llamado a GLUT ) a traves de callbacks. Para lograr este fin la clase Scene
implementa una interfaz de Callbacks;

\subsection{Objetos de la escena:}
Los objetos de la escena se modelan a trav\'es de la clase abstracta SceneObject. Esta clase
se encarga de representar al objeto como un rectangulo con coordenadas relativas
a la escena.\\
Cada objeto en particular a utilizar en la escena implementa esta clase y ajusta
las posici\'on y las dimensiones de sus vertices para dibujar dentro de dicho rectangulo.

\subsection{Gravedad:}
Se implementa un sistema de gravedad a trav\'es de la clase Gravity y Solid. La clase gravity
conoce todos los objetos solidos existentes en la escena y se encarga de aceleralos segun la 
aceleraci\'on que se le indique.
La clase Solid representa a todos los objetos que pueden ser acelerados por la gravedad 
y que adem\'as pueden colisionar con otro solidos.

\subsection{Agarre de las Cajas:}
Para implementar el sistema de agarre de las cajas se utilzaron 2 interfaces, Grabable y Grabber.
Con la clase  Grabable se representan los objetos agarrables,a estos se les inidica una zona( con coordenadas relativa a la escena  ) donde es posible el agarre.
La clase Grabber posee la lista de todos los objetos que son agarrables y su posici\'on( relativa a la escena), al momento de agarrar este
busca la intersecci\'on entre su posici\'on y todos las zonas de agarre de los objetos Grabable sabiendo
asi cuando el agarre es posible.

\subsection{Diagrama de Clases}

\newpage
\begin{itemize}
 \item Diagrama de clases del Pipeline 2D:
\end{itemize}
\begin{center}
 \includegraphics[width=280pt,height=230pt]{pipeline.png}
\end{center}

\begin{itemize}
 \item Diagrama de clases de la Escena:
\end{itemize}
\begin{center}
 \includegraphics[width=280pt,height=230pt]{framework.png}
\end{center}

\newpage
\begin{itemize}
 \item Diagrama de clases del Helicoptero:
\end{itemize}
\begin{center}
 \includegraphics[width=260pt,height=160pt]{helicopter.png}
\end{center}

\begin{itemize}
 \item Diagrama de clases del Camion:
\end{itemize}
\begin{center}
 \includegraphics[width=200pt,height=100pt]{truck.png}
\end{center}

\begin{itemize}
 \item Diagrama de clases de las Cajas:
\end{itemize}
\begin{center}
 \includegraphics[width=230pt,height=120pt]{crate.png}
\end{center}


\end{document}


